// pages/category/category.js
import { request } from "../../request/index.js"
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //左侧的菜单数据
    leftMenuList:[],
    //右侧的商品数据，
    rightContent:[],
    cateList:[],
    //被点击的左侧地菜单
    currentIndex:0,
    //右侧内容的滚动条的距离顶部的距离
    scrollTop:0
  },
  //接口的返回数据
  Cates:[],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 先判断以下本地存储中有没有旧的数据 {time:Date.now(), data:[]}
    //如果没有旧数据就直接发送请求 
    // 如果有旧数据 同时 旧数据也没有过期，就使用 本地存储中的旧数据即可
    // this.getCateList();

    //获取本地存储中的数据  小程序中也是存在本地存储这个技术
    const Cates=wx.getStorageSync('cates');
    //判断
    if(!Cates){
      this.getCateList();
    }else{
      //有旧的数据 暂时定义一个过期时间
      if(Date.now()-Cates.time > 1000 * 10){
        //重新发送请求
        this.getCateList();
      }else{
        //可以使用就的数据
        console.log("可以使用旧的数据")
        ths.Cates=Cates.data
        let leftMenuList = this.Cates.map(v=>v.cat_name)

        //构造右边的商品数据
        let rightContent=this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }

    }
  },

  //获取分类数据
  async getCateList(){
    // request({"url":"/categories"}).then(result=>{
    //   this.Cates=result.data.message;

    //   //把接口中的数据存储到本地存储中
    //   wx.setStorageSync('cates', {time:Date.now(),data:this.Cates})

    //   //构造左侧的大菜单数据
    //   let leftMenuList = this.Cates.map(v=>v.cat_name)

    //   //构造右边的商品数据
    //   let rightContent=this.Cates[0].children;
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })

    // 1 使用es7的async  await来发送请求
    const res = await request({url:"/categories"});
    this.Cates=res;
    let leftMenuList = this.Cates.map(v=>v.cat_name);
    let rightContent=this.Cates[0].children;
    this.setData({
      leftMenuList,
      rightContent
    })
  },
  handleItemTap(e){
    // console.log(e)
    //获取被惦记的标题身上的索引
    //给data中的currentIndex赋值就可以了
    //根据不同的索引来渲染右侧的商品内容
    const {index} = e.currentTarget.dataset;
    let rightContent=this.Cates[index].children;
    //重新设置 右侧内从的scroll-view标签的距离顶部的距离
    this.setData({
      currentIndex:index,
      rightContent,
      scrollTop:0
    })
  }
})